<?php

/**
 * Excel_Writer
 * 
 * Класс для генерации прайса.
 * 
 * @package Store
 * @author Игорь Будасов aka Lord <igor.budasov@gmail.com> 
 */

class Excel_Writer
{

    var $fp=null;

/*------------------------------------------------------------------------------*/

    /**
    * Точка входа.
    * Параметром принимает файл
    * 
    * @param string $file
    * @return resource
    */
    
    function Excel_Writer($file=""){
        
            return $this->open($file);
    }
    
/*------------------------------------------------------------------------------*/

    /**
    * Открывает файл
    * 
    * @param string $file
    * @return resource
    */

    function open($file){ 
        $this->fp=fopen($file,"w+");
          
        fwrite($this->fp,$this->writeHeader());
        return $this->fp;
    }

/*------------------------------------------------------------------------------*/

    /**
    * Закрывает файл после записи в него
    */

    function close(){
        fwrite($this->fp,$this->writeFooter());
        fclose($this->fp);
        return ;
    }

/*------------------------------------------------------------------------------*/
    
    /**
    * Пишет системный заголовок файла .
    * Чтоб эксель распознал файл как свой
    */

    function writeHeader(){
        $header = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"
                xmlns:x=\"urn:schemas-microsoft-com:office:excel\"
                xmlns=\"http://www.w3.org/TR/REC-html40\">

                <head>
                <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
                <meta http-equiv=\"Content-Language\" content=\"ru\" />
                <meta name=\"ProgId\" content=\"Excel.Sheet\">
                <!--[if gte mso 9]><xml>
                 <o:DocumentProperties>
                  <o:LastAuthor></o:LastAuthor>
                  <o:LastSaved></o:LastSaved>
                  <o:Version></o:Version>
                 </o:DocumentProperties>
                 <o:OfficeDocumentSettings>
                  <o:DownloadComponents/>
                 </o:OfficeDocumentSettings>
                </xml><![endif]-->
                

                <!--[if gte mso 9]><xml>
                 <x:ExcelWorkbook>
                  <x:ExcelWorksheets>
                   <x:ExcelWorksheet>
                    <x:Name>Price</x:Name>
                    <x:WorksheetOptions>
                     <x:Selected/>
                     <x:ProtectContents>False</x:ProtectContents>
                     <x:ProtectObjects>False</x:ProtectObjects>
                     <x:ProtectScenarios>False</x:ProtectScenarios>
                    </x:WorksheetOptions>
                   </x:ExcelWorksheet>
                  </x:ExcelWorksheets>
                  <x:WindowHeight>10005</x:WindowHeight>
                  <x:WindowWidth>10005</x:WindowWidth>
                  <x:WindowTopX>120</x:WindowTopX>
                  <x:WindowTopY>135</x:WindowTopY>
                  <x:ProtectStructure>False</x:ProtectStructure>
                  <x:ProtectWindows>False</x:ProtectWindows>
                 </x:ExcelWorkbook>
                </xml><![endif]-->
                </head>

                <body link=\"blue\" vlink=\"purple\">
                <table x:str border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse;table-layout:fixed;\">";
        return $header;
    }

/*------------------------------------------------------------------------------*/

    /**
    * Пишет подвал файла
    */

    function writeFooter(){
        return "</table></body></html>";
    }

/*------------------------------------------------------------------------------*/

    /**
    * Пишет заголовок таблицы прайса
    */

    function writeHead(){
        
        fwrite($this->fp,"
            <tr>
            <td><b>Код</b></td>
            <td><b>Название</b></td>
            <td><b>Характеристики</b></td>
            <td><b>Цена</b></td>
            <td><b>Наличие</b></td>
            </tr>");
        return;
    }

/*------------------------------------------------------------------------------*/

    /**
    * Пишет строку товара
    * Входящий параметр - массив с данными о товаре
    * 
    * @param array $data
    */

    function writeProduct($data){
        fwrite($this->fp,"
            <tr>
            <td>".$data->code."</td>
            <td>".$data->name."</td>
            <td>".$data->s_description."</td>
            <td>".$data->price."</td>
            <td>".$data->stock."</td>
            </tr>
            ");
        return;
    }

/*------------------------------------------------------------------------------*/

}
?>
